﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FieldsandAttributes
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 Person 对象并设置其字段和属性
            Person person = new Person("Alice", 30);

            // 输出字段值
            Console.WriteLine("通过字段访问：");
            Console.WriteLine($"姓名：{person._name}");
            Console.WriteLine($"年龄：{person._age}");


            Console.WriteLine("\n通过属性访问：");
            Console.WriteLine($"姓名：{person.Name}");
            Console.WriteLine($"年龄：{person.Age}");


            person.DisplayInfo();

            // 修改属性值
            person.Name = "Bob";
            person.Age = 150;

            Console.WriteLine("\n通过字段访问：");
            Console.WriteLine($"姓名：{person._name}");
            Console.WriteLine($"年龄：{person._age}");


            Console.WriteLine("\n通过属性访问：");
            Console.WriteLine($"姓名：{person.Name}");
            Console.WriteLine($"年龄：{person.Age}");


            // 修改字段的值
            person._name = "zhangsan";
            person._age = 200;

            Console.WriteLine("\n通过字段访问：");
            Console.WriteLine($"姓名：{person._name}");
            Console.WriteLine($"年龄：{person._age}");

            // 输出属性值
            Console.WriteLine("\n通过属性访问：");
            Console.WriteLine($"姓名：{person.Name}");
            Console.WriteLine($"年龄：{person.Age}");

            person.DisplayInfo();

            Console.ReadLine();

        }
    }



    // 定义一个人的类
    class Person
    {
        // 字段
        public string _name; // 姓名字段
        public int _age;     // 年龄字段

        // 属性
        public string Name   // 姓名属性
        {
            get { return _name; }
            set { _name = value; }
        }

        public int Age       // 年龄属性
        {
            get { return _age+5; }
            set
            {
                if (value >= 0 && value <= 120)
                {
                    _age = value;
                }
                else
                {
                    //throw new ArgumentException("年龄必须在0到120之间");
                    _age = -1;
                }
            }
        }

        // 构造函数
        public Person(string name, int age)
        {
            Name = name;
            Age = age;
        }

        // 方法 - 显示人的信息
        public void DisplayInfo()
        {
            Console.WriteLine($"姓名：{Name}，年龄：{Age}");
        }
    }


}
